package com.eastchina.fids2focs.service;

import java.util.List;

import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;

import com.eastchina.fids2focs.common.util.FIDSIIUtil;
import com.eastchina.fids2focs.domain.FuncSfIsValidVo;
import com.eastchina.fids2focs.domain.SystemUser;
import com.eastchina.fw.database.dao.ProcedureDAO;
import com.eastchina.fw.database.dao.QueryDAO;
import com.eastchina.fw.database.dao.UpdateDAO;


/**
 * 用户维护服务组件
 * 
 * @author xiayg
 *
 */
@WebService(serviceName="UserService", 
		endpointInterface="com.eastchina.fids2focs.service.UserService")
public class UserServiceImpl implements UserService {

	/**
	 * 查询DAO
	 */
	@Autowired
	QueryDAO queryDAO;
	
	/**
	 * 更新DAO
	 */
	@Autowired
	UpdateDAO updateDAO;
	
	/**
	 * 存储过程DAO
	 */
	@Autowired
	ProcedureDAO procedureDAO;
	
	/**
	 * 删除用户基本信息
	 * 
	 * @param userName 用户名
	 */
	public void delete(String userName) {
		updateDAO.execute("user.delete", userName);
	}

	/**
	 * 插入用户基本信息
	 * 
	 * @param user 用户信息
	 */
	public void insert(SystemUser user) {
		// insert user
		updateDAO.execute("user.insert", user);
	}

	/**
	 * 查询用户基本信息
	 * 
	 * @param userName 用户名
	 */
	public SystemUser select(String userName) {
		return queryDAO.executeForObject("user.select", userName, SystemUser.class);
	}

	/**
	 * 查询所有用户基本信息
	 * 
	 */
	public List<SystemUser> selectAllUsers() {
		return queryDAO.executeForObjectList("user.selectAllUsers", QueryDAO.EMPTY_PARAMS);
	}

	/**
	 * 修改用户基本信息
	 * 
	 * @param user 用户信息
	 */
	public void update(SystemUser user) {
		updateDAO.execute("user.update", user);
	}
	
	/**
	 * 调用存储过程的DEMO
	 */
	public String checkIp(String userName) {
		
		FuncSfIsValidVo sqlParams = new FuncSfIsValidVo();
		// IP
		sqlParams.setIIpAddr(FIDSIIUtil.getClientIpAddr());
		// User
		sqlParams.setIUser(userName);
		// execute
		procedureDAO.executeForObject("procedure.sf_isvalid", sqlParams);
		
		return sqlParams.getOResult();
		
	}

}
